package com.gopay.solution.manager;

import java.util.List;

import com.gopay.common.exception.validator.GopayCheckException;
import com.gopay.solution.common.constant.OprLevel;
import com.gopay.solution.domain.po.SolutionRuleDtl;
import com.gopay.solution.domain.vo.Solution;

/**
 * 交易基础方案管理器
 * 
 * @SsTbSolutionManager.java
 * @author MA HUAN
 * @2013-4-17 下午4:20:53 www.gopay.com.cn Inc.All rights reserved.
 */
public interface SsTbSolutionManager {

    /**
     * 根据指定交易码编辑交易基础方案<BR>
     * 1. 假如 oprLevel = PROD, 则 oprKey为账户产品<BR>
     * 2. 假如oprLevel = ACCT, 则 oprKey为账户id<BR>
     * 
     * @param solu
     *            方案信息
     * @param gopayIntTxnCd
     *            交易码
     * @param oprLevel
     *            编辑层次
     * @param oprKey
     *            编辑主键
     * @throws GopayCheckException
     */
    public void saveSsTbSolution(Solution solu, String gopayIntTxnCd, OprLevel oprLevel, String oprKey,String prodCode)
            throws GopayCheckException;

    //add by wangdong 20160902 增加产品类型，缓存用，通用基础方案
    public void editSsTbSolution(long solutionId, String gopayIntTxnCd, List<SolutionRuleDtl> rules,String prodCode)
            throws GopayCheckException;

    //add by wangdong 20160902 增加产品类型，缓存用，个性化基础方案
    public void editSsTbSolution(long solutionId, String gopayIntTxnCd, List<SolutionRuleDtl> rules,String prodCode,String acctId)
            throws GopayCheckException;
}
